import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决坐标轴负号显示问题

# 读取数据文件
file_path = 'data.csv'  # 请将此路径替换为您的本地文件路径
data = pd.read_csv(file_path, encoding='utf-8-sig')

# 忽略第一列
data = data.iloc[:, 1:]

# 计算统计信息：均值、标准差、方差、最小值、最大值、中位数、四分位数
mean = data.mean()
std_dev = data.std()
variance = data.var()
minimum = data.min()
maximum = data.max()
median = data.median()
quantile_25 = data.quantile(0.25)
quantile_75 = data.quantile(0.75)

# 创建一个数据框来保存统计信息
statistics = pd.DataFrame({
    '均值': mean,
    '标准差': std_dev,
    '方差': variance,
    '最小值': minimum,
    '最大值': maximum,
    '中位数': median,
    '25%分位数': quantile_25,
    '75%分位数': quantile_75
})

# 保存统计信息到 CSV 文件
statistics_file_path = 'statistics.csv'  # 请将此路径替换为您希望保存文件的路径
statistics.to_csv(statistics_file_path, encoding='utf-8-sig')

print(f"统计信息已保存到：{statistics_file_path}")

# 绘制直方图并保存
numerical_features = data.select_dtypes(include=[np.float64, np.int64]).columns

# 创建保存直方图的文件夹
histograms_dir = 'histograms'  # 请将此路径替换为您希望保存图像的路径
os.makedirs(histograms_dir, exist_ok=True)

# 配置颜色列表
colors = sns.color_palette("husl", len(numerical_features))

for i, (col, color) in enumerate(zip(numerical_features, colors), 1):
    plt.figure(figsize=(8, 6))
    sns.histplot(data[col], kde=True, color=color)
    plt.title(f'Histogram of {col}')
    plt.xlabel(col)
    plt.ylabel('Frequency')

    # 保存每个直方图
    histograms_file_path = os.path.join(histograms_dir, f'histogram_{col}.png')
    plt.tight_layout()
    plt.savefig(histograms_file_path)
    plt.close()  # 关闭当前图表，避免重叠

    print(f"直方图已保存到：{histograms_file_path}")
